satisfiability problem